package com.eltsistemas.os.controller.pessoa;

import java.text.ParseException;

import org.hibernate.Session;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;

import com.eltsistemas.hibernate.HibernateUtil;
import com.eltsistemas.os.dao.pessoa.DepartamentoDao;
import com.eltsistemas.os.modelo.pessoa.Departamento;

@Controller
@RequestMapping("/departamento")
public class DepartamentoController {
	
	@RequestMapping("/adiciona")
	public String adiciona(Departamento departamento)
	{
		Session session = new HibernateUtil().getSession();
		session.beginTransaction();
		
		DepartamentoDao daoDepartamento = new DepartamentoDao(session);
		
		try
		{
			daoDepartamento.adiciona(departamento);
			session.close();
			return "redirect:lista";	
		}
		catch(Exception e)
		{
			return "redirect:lista?valor=true";
		}
	}
	
	@RequestMapping("/lista")
	public String lista(Model model, boolean valor)
	{
		Session session = new HibernateUtil().getSession();
		session.beginTransaction();
		
		DepartamentoDao daoDepartamento = new DepartamentoDao(session);	
		model.addAttribute("departamentos", daoDepartamento.lista());
		
		session.close();
		return "departamento";
	}
	
	@RequestMapping("/alterado")
	public String altera(Departamento departamento) throws ParseException
	{
		Session session = new HibernateUtil().getSession();
		session.beginTransaction();
		
		DepartamentoDao daoDepartamento = new DepartamentoDao(session);
		try
		{
			daoDepartamento.altera(departamento);
			session.close();
			return "redirect:lista";
		}
		catch(Exception e)
		{
			return "redirect:lista?valor=true";
		}
	}
	
	
	@RequestMapping("/remover")
	public String remover(Departamento departamento)
	{
		Session session = new HibernateUtil().getSession();
		session.beginTransaction();

		DepartamentoDao daoDepartamento = new DepartamentoDao(session);	
		daoDepartamento.remover( departamento );
		
		session.close();
		
		return "redirect:lista";
	}

}
